<?php
// 编码：utf-8
// 文件件：index.php
// 功能：将API的调用转至真正的API并返回结果，好处是隐藏了真正建API的空间，起到防止域名或IP被墙的可能，也避免token泄漏。
// 使用：通常将此文件跟附带的.htaccess放到免费空间的任意子目录下，对应修改下面两行define的内容即可。
// 作者：@lordong 项目文件：http://code.google.com/p/twip-transfer
// 感谢：@cnyegle 写的twip，我这里借用了.htaccess文件，twip在http://code.google.com/p/twip

////////////////////////////////////////////////////////////////////////////////
// 本地的虚API目录，比如"/twip"、"/myapi/twip"
define('LOCAL_API_ROOT', '/twip');
// 真正的API目录，比如"http://yourdomain.com/fuck/gfw/twip"
define('REAL_API_ROOT', 'http://yourdomain.com/fuck/gfw/twip');

////////////////////////////////////////////////////////////////////////////////
// 以下为正中转代码，不熟悉请不要改
function getContent($url, $headers, $post, $data) {
	$ch = curl_init();
	
	$hd = makeHeaders($headers);
	if ($post) {
		curl_setopt($ch, CURLOPT_POST, 1);
		if ($data) {
			curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
		} else {
			$hd[] = 'Content-Length: 0';
		}
	}
	else {
		curl_setopt($ch, CURLOPT_HTTPGET, 1);
	}
	
	curl_setopt($ch, CURLOPT_URL, $url);
	curl_setopt($ch, CURLOPT_HEADER, 0);
	curl_setopt($ch, CURLOPT_HTTPHEADER, $hd);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	
	if (strstr($url, 'https://')) {
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
	}
	
	$recvData = curl_exec($ch);
	curl_close($ch);
	
	$ismatch = preg_match('/<title>(Welcome to Twip|Twip 4 - Configuration)<\/title>/i', $recvData, $matches);
	if ($ismatch) {
		$recvData = '<html><head><title>Welcome to Twip Transfer</title></head><body><h2>Welcome to Twip Transfer.</h2><h3>Your Twip is working correctly, enjoy it!</h3><p>Open source: <a href="http://code.google.com/p/twip-transfer">twip-transfer</a></p></body></html>';
	}
	echo $recvData;
}

function emu_getallheaders() {
	foreach ($_SERVER as $h => $v) {
		if (ereg('HTTP_(.+)', $h, $hp)) {
			$headers[$hp[1]] = $v;
		}
	}
	
	return $headers;
}

function makeHeaders($arr) {
	foreach ($arr as $k => $v) {
		if (strcasecmp($k, 'Host') != 0)
			$ret[] = $k . ': ' . $v;
	}
	
	return $ret;
}

$url = str_replace(LOCAL_API_ROOT, REAL_API_ROOT, $_SERVER['REQUEST_URI']);
$headers = emu_getallheaders();
$post = $_SERVER['REQUEST_METHOD'] == 'POST';
if ($post) {
	$data = @file_get_contents('php://input');
}
getContent($url, $headers, $post, $data);
?>
